On multitasking operating systems, users often run multiple applications (or processes) concurrently. This can lead to a problem when more than one application attempts to access a resource, such as a network, at the same time. For example, consider a client machine running several applications: application A is a non-interactive network communications intensive application, while application B may be an interactive network communications application. Applications A and B contend for the limited and shared network bandwidth resource. This may cause a problem if application A consumes large amounts of bandwidth and prevents application B from obtaining adequate bandwidth, further causing application B to run at diminished capacity and resulting in a loss in productivity for the user. In this example, the presence of application B network activity would likely cause a measurable decrease in the bandwidth utilization of application A. Accordingly, there is a need to be able to detect this temporary decrease in throughput for application A and effectively manage bandwidth utilization between the competing applications. Furthermore, there is a need to measure the decrease in throughput from competing applications based on user-defined parameters.
In addition, the above example highlights the need for managing bandwidth utilization based on bandwidth control parameters effectuated at the client system, and which do not have to be communicated to the server system to achieve the desired utilization. This would reduce the need for additional processing at the server system, while also alleviating client-side network contention.